#include<iostream>
#include<cstdio>
#include<cstring>
#include<conio.h>
using namespace std;
#define MAX_BOOKS 200
#define MAX_ISBN 14
#define MAX_BOOK_NAME 20
#define MAX_AUTH_NAME 10

#define MAX_PRICE 100.0
enum menu
{
    exitSystem = 0,
    addBook = 1,
    lookBook=2,
    findBook=3,
    deleBook=4,
    modifyBook=5

};
// Structure to store book information
typedef struct
{
    char ISBN[MAX_ISBN];
    char name[MAX_BOOK_NAME + 1];
    char auth[MAX_AUTH_NAME + 1];
    float price;
    int inventory; // 库存数量
} Book;//每一本书的信息
typedef struct bookNode
{
    Book data;
    struct bookNode* next;
}bookNode;//每一本书的链表节点
typedef struct LibBook
{
    bookNode* head;
    int bookNum;
}LibList;//图书链表(存储着所有书籍)，其中存储了链表的头节点和数量


void login();//登录的函数
void functMenu();//显示功能菜单
void initList(LibList* libList);//从文件中读取所有书到链表中，若文件为空则生成100本书到链表里面
void updateFile(LibList* libList);//将链表里面的书籍更新到文件里面
void generateSingleBook(LibList* LibList);//初始时随机产生单本书
void functLookBook(LibList* libList);//查看书籍
void functAddBook(LibList* libList);//增添书籍
void functFindBook(LibList* libList);//查找书籍
void findISBN(bookNode* head, char ISBN[MAX_ISBN]);//根据ISBN码查询
void findName(bookNode* head, char inputName[MAX_BOOK_NAME + 1]);//根据书名查找
void findAuth(bookNode* head, char inputAuth[MAX_AUTH_NAME + 1]);//根据作者查找
void functDeleBook(LibList* libList);//删除书籍
void deleISBN(bookNode* head, char ISBN[MAX_ISBN]);//根据ISBN码删除
void deleName(bookNode* head, char inputName[MAX_BOOK_NAME + 1]);//根据书名删除
void deleAuth(bookNode* head, char inputAuth[MAX_AUTH_NAME + 1]);//根据作者删除
int functModifyBook(LibList* libList);//修改书籍

